<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>vfs_aio_pthread</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" title="vfs_aio_pthread"><a name="vfs_aio_pthread.8"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>vfs_aio_pthread &#8212; implement async I/O in Samba vfs using a pthread pool</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="literal">vfs objects = aio_pthread</code></p></div></div><div class="refsect1" title="DESCRIPTION"><a name="id266340"></a><h2>DESCRIPTION</h2><p>This VFS module is part of the
	<a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a> suite.</p><p>The <code class="literal">aio_pthread</code> VFS module enables asynchronous
	I/O for Samba on platforms which have the pthreads API available,
	without using the Posix AIO interface. Posix AIO can suffer from severe
	limitations.  For example, on some Linux versions the
	real-time signals that it uses are broken under heavy load.
	Other systems only allow AIO when special kernel modules are
	loaded or only allow a certain system-wide amount of async
	requests being scheduled. Systems based on glibc (most Linux
	systems) only allow a single outstanding request per file
	descriptor which essentially makes Posix AIO useless on systems
	using the glibc implementation.</p><p>To work around all these limitations, the aio_pthread module
	was written. It uses a pthread pool instead of the
	internal Posix AIO interface to allow read and write calls
	to be process asynchronously. A pthread pool is created
	which expands dynamically by creating new threads as work is
	given to it to a maximum of 100 threads per smbd process.
	To change this limit see the "aio num threads" parameter
	below. New threads are not created if idle threads are
	available when a new read or write request is received,
	the new work is given to an existing idle thread. Threads
	terminate themselves if idle for one second.
	</p><p>
	Note that the smb.conf parameters <code class="literal">aio read size</code>
	and <code class="literal">aio write size</code> must also be set appropriately
	for this module to be active.
	</p><p>This module MUST be listed last in any module stack as
	the Samba VFS pread/pwrite interface is not thread-safe. This
	module makes direct pread and pwrite system calls and does
	NOT call the Samba VFS pread and pwrite interfaces.</p></div><div class="refsect1" title="EXAMPLES"><a name="id266856"></a><h2>EXAMPLES</h2><p>Straight forward use:</p><pre class="programlisting">
        <em class="parameter"><code>[cooldata]</code></em>
	<a class="link" href="smb.conf.5.html#PATH" target="_top">path = /data/ice</a>
	<a class="link" href="smb.conf.5.html#AIOREADSIZE" target="_top">aio read size = 1024</a>
	<a class="link" href="smb.conf.5.html#AIOWRITESIZE" target="_top">aio write size = 1024</a>
	<a class="link" href="smb.conf.5.html#VFSOBJECTS" target="_top">vfs objects = aio_pthread</a>
</pre></div><div class="refsect1" title="OPTIONS"><a name="id265817"></a><h2>OPTIONS</h2><div class="variablelist"><dl><dt><span class="term">aio_pthread:aio num threads = INTEGER</span></dt><dd><p>Limit the maximum number of threads per smbd that
		will be created in the thread pool to service IO requests.
		</p><p>By default this is set to 100.</p></dd></dl></div></div><div class="refsect1" title="VERSION"><a name="id265844"></a><h2>VERSION</h2><p>This man page is correct for version 3.6.3 of the Samba suite.
	</p></div><div class="refsect1" title="AUTHOR"><a name="id265854"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities
	were created by Andrew Tridgell. Samba is now developed
	by the Samba Team as an Open Source project similar
	to the way the Linux kernel is developed.</p></div></div></body></html>
